package com.plian.system.entity.im;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.plian.system.mybatis.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;

/**
 * @description: 年度新增股权投资计划表
 * @author: gangan
 * @create: 2020-04-23 14:59
 */
@Data
@TableName("im_stake_investment_plan")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "年度新增股权投资计划表", description = "年度新增股权投资计划表")
public class StakeInvestmentPlan extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主表id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "主表id")
    private Long baseInvestmentPlanId;
    
    /**
     * 项目id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "项目id")
    private Long projectId;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称", required = true)
    private String projectName;

    /**
     * 项目性质
     */
    @ApiModelProperty(value = "项目性质", required = true)
    private String projectNatureId;

    /**
     * 项目类别 1自营项目（主业项目)、2自营项目（培育业务项目）、3自营项目（非主业项目）、4政府性项目
     */
    @ApiModelProperty(value = "项目类别 1自营项目（主业项目)、2自营项目（培育业务项目）、3自营项目（非主业项目）、4政府性项目", required = true)
    private Integer projectCategory;

    /**
     * 投资企业
     */
    @ApiModelProperty(value = "投资企业", required = true)
    private String investmentCompanyId;

    /**
     * 投资企业层级
     */
    @ApiModelProperty(value = "投资企业层级", required = true)
    private String investmentCompanyRankId;

    /**
     * 资本金
     */
    @TableField(value = "capital",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "资本金")
    private BigDecimal capital;

    /**
     *是否是负面清单项目 1否2是
     */
    @ApiModelProperty(value = "是否是负面清单项目 1否2是", required = true)
    private Integer isNegativeProject;

    /**
     * 年初被投资企业注册资本 总额
     */
    @TableField(value = "beginning_invested_total",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "年初被投资企业注册资本 总额", required = true)
    private BigDecimal beginningInvestedTotal;

    /**
     * 年初被投资企业注册资本 其中：本企业
     */
    @TableField(value = "beginning_invested_enterprise",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "年初被投资企业注册资本 其中：本企业", required = true)
    private BigDecimal beginningInvestedEnterprise;

    /**
     * 年初被投资企业注册资本 年初持股比例（%)
     */
    @TableField(value = "beginning_invested_stake",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "年初被投资企业注册资本 年初持股比例（%)", required = true)
    private BigDecimal beginningInvestedStake;

    /**
     *项目计划总投资 总额
     */
    @TableField(value = "plan_total_investment",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "项目计划总投资 总额", required = true)
    private BigDecimal planTotalInvestment;

    /**
     *项目计划总投资  其中：本企业
     */
    @TableField(value = "plan_total_investment_enterprise",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "项目计划总投资  其中：本企业", required = true)
    private BigDecimal planTotalInvestmentEnterprise;

    /**
     *项目计划总投资 内部收益率
     */
    @TableField(value = "plan_total_investment_irr",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "项目计划总投资 内部收益率", required = true)
    private BigDecimal planTotalInvestmentIrr;

    /**
     *本年计划完成投资 投资额
     */
    @TableField(value = "plan_complete_investment",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "本年计划完成投资 投资额", required = true)
    private BigDecimal planCompleteInvestment;

    /**
     *本年计划完成投资  本年投资完成后，累计完成投资总额
     */
    @TableField(value = "plan_complete_investment_total",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "本年计划完成投资  本年投资完成后，累计完成投资总额", required = true)
    private BigDecimal planCompleteInvestmentTotal;

    /**
     *本年计划完成投资 年末预计持股比例（%）
     */
    @TableField(value = "plan_complete_investment_stake",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "本年计划完成投资 年末预计持股比例（%）", required = true)
    private BigDecimal planCompleteInvestmentStake;

    /**
     * 是否本年新增项目 1否2是
     */
    @ApiModelProperty(value = "是否本年新增项目 1否2是", required = true)
    private Integer isNewProject;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

}
